1. Field of the Invention
The present invention generally relates to spread-spectrum (SS) systems. In particular, the present invention relates to methods systems, and apparatus for correlating a received SS signal with all lags of a rotating reference code sequence and producing all correlation lags at a sampling instant.
2. Description of the Related Art
SS techniques have many applications such as multiple-access communications, secure communications, channel sounding, distance measurement and target identification using radars and sonars, and navigation using GPS and GLONASS. One of the essential elements in the implementation of SS systems is a correlator. A correlator is required at a SS receiver to initially acquire the incoming SS signal, as well as to perform other tasks such as code tracking, symbol and carrier clock recovery, demodulation of information systems, and channel estimation.
Commonly used forms of correlators include serial correlators, parallel correlators, banks of serial correlators, and all-lag correlators. An all-lag correlator correlates a stream of incoming data samples with 0, 1, . . . , N−1 lags of an N-length reference code sequence and produces a stream of all-lag even- or odd-correlation at a rate equal to the rate of incoming data samples. Since more correlation information is provided by all-lag correlators than other commonly used forms of correlators, some applications can take advantage of this additional correlation information.
Let dn denote the stream of incoming data samples and {c0, c1, , CN−1} be the reference code sequence. An all-lag correlator generates a stream of all-lag even-correlation vectors, r′n, or a stream of all-lag odd-correlation vectors, {overscore (r)}′n, every sampling instant, where r′n=[r′0,n,r′1,n, . . . ,r′N−1,n]T and {overscore (r)}′n=[{overscore (r)}′0,n,{overscore (r)}′1,n, . . . ,{overscore (r)}′N−1,n]T are given byr′n=Adn  (1) and{overscore (r)}′n=Ādn  (2) In the expressions, r′m,n and {overscore (r)}′m,n denote respectively the mth even- and odd-correlation lags obtained at time n,                     A        =                  [                                                                      c                  0                                                                              c                  1                                                                              c                  2                                                            …                                                              c                                      N                    -                    2                                                                                                c                                      N                    -                    1                                                                                                                        c                                      N                    -                    1                                                                                                c                  0                                                                              c                  1                                                            …                                                              c                                      N                    -                    3                                                                                                c                                      N                    -                    2                                                                                                                        c                                      N                    -                    2                                                                                                c                                      N                    -                    1                                                                                                c                  0                                                            …                                                              c                                      N                    -                    4                                                                                                c                                      N                    -                    4                                                                                                      ⋮                                            ⋮                                            ⋮                                            ⋰                                            ⋮                                            ⋮                                                                                      c                  2                                                                              c                  3                                                                              c                  4                                                            …                                                              c                  0                                                                              c                  1                                                                                                      c                  1                                                                              c                  2                                                                              c                  3                                                            …                                                              c                                      N                    -                    1                                                                                                c                  0                                                              ]                                    (        3        )                        and                                                                 A          _                =                  [                                                                      c                  0                                                                              c                  1                                                                              c                  2                                                            …                                                              c                                      N                    -                    2                                                                                                c                                      N                    -                    1                                                                                                                        -                                      c                                          N                      -                      1                                                                                                                    c                  0                                                                              c                  1                                                            …                                                              c                                      N                    -                    3                                                                                                c                                      N                    -                    2                                                                                                                        -                                      c                                          N                      -                      2                                                                                                                    -                                      c                                          N                      -                      1                                                                                                                    c                  0                                                            …                                                              c                                      N                    -                    4                                                                                                c                                      N                    -                    4                                                                                                      ⋮                                            ⋮                                            ⋮                                            ⋰                                            ⋮                                            ⋮                                                                                      -                                      c                    2                                                                                                -                                      c                    3                                                                                                -                                      c                    4                                                                              …                                                              c                  0                                                                              c                  1                                                                                                      -                                      c                    1                                                                                                -                                      c                    2                                                                                                -                                      c                    3                                                                              …                                                              -                                      c                                          N                      -                      1                                                                                                                    c                  0                                                              ]                                    (        4        )            are N×N matrices, anddn=[dn−(N−1), dn−(N−2), . . . , dn−1, dn]T  (5) is a data vector containing the N most recent data samples. Correlation information in r′n and {overscore (r)}′n, when processed, can be extracted for various purposes. The information provided by r′n is useful when the SS signal is composed of periodic repetition of the reference code sequence without data modulation. The information contained in r′n and {overscore (r)}′n is applicable when the SS signal is a data signal modulated with the entirety of the reference code.
Despite various advantages, the correlation peak of an all-lag correlator that generates r′n or {overscore (r)}′n shifts from output to output as the correlation vector is updated by newly received data samples. Shifting of the peak position increases the subsequent signal processing requirement for extracting useful information provided by the all-lag correlation. It is desirable to keep the peak position fixed in order to reduce the posterior signal processing requirement. Furthermore, keeping the peak position fixed enables more convenient manipulation of the correlation information in certain applications, such as estimation of the multipath channel profile in wireless communications and ranging in radar systems.
It is possible to overcome the peak-shifting problem by using all-lag correlators that employ rotating reference code sequences. Herein the correlators are referred to as all-lag rotating-reference correlators, and are different from the ones for generating r′n and {overscore (r)}′n, in which fixed reference codes are used. An all-lag rotating-reference correlator that generates at time n an all-lag even-correlation vector rn=[r0,n,r1,n, . . . ,rN−1,n]T, wherein rm,n is the mth even-correlation lag, is constructed as follows.Define an N×N shift matrix S, where                     S        =                              [                                                            0                                                  0                                                  0                                                  …                                                  0                                                  1                                                                              1                                                  0                                                  0                                                  …                                                  0                                                  0                                                                              0                                                  1                                                  0                                                  …                                                  0                                                  0                                                                              ⋮                                                  ⋮                                                  ⋮                                                  ⋰                                                  ⋮                                                  ⋮                                                                              0                                                  0                                                  0                                                  …                                                  0                                                  0                                                                              0                                                  0                                                  0                                                  …                                                  1                                                  0                                                      ]                    .                                    (        6        )            Then rn is computed byrn=Cndn  (7) where dn is a data vector given by equation. (5), and Cn is an N×N matrix constructed byC0=A Cn+1=SCn, n≧0  (8) It follows thatCn=S″A, n≧0  (9) An all-lag rotating-reference correlator that generates at time n an all-lag odd-correlation vector {overscore (r)}n=[{overscore (r)}0,n, {overscore (r)}1,n, . . . , {overscore (r)}N−1,n]T, wherein {overscore (r)}m,n, is the mth odd-correlation lag, is constructed as follows.Define an N×N shift matrix                               S          _                =                  [                                                    0                                            0                                            0                                            …                                            0                                                              -                  1                                                                                    1                                            0                                            0                                            …                                            0                                            0                                                                    0                                            1                                            0                                            …                                            0                                            0                                                                    ⋮                                            ⋮                                            ⋮                                            ⋰                                            ⋮                                            ⋮                                                                    0                                            0                                            0                                            …                                            0                                            0                                                                    0                                            0                                            0                                            …                                            1                                            0                                              ]                                    (        10        )            Then {overscore (r)}n is given by{overscore (r)}n={overscore (C)}ndn  (11) where {overscore (C)}n is recursively generated by{overscore (C)}0=Ā{overscore (C)}n+1={overscore (SC)}n, n≧0  (12) Therefore,{overscore (C)}n={overscore (S)}nĀ, n≧0  (13) It can be shown that the reference code used to compute rn and {overscore (r)}n is time-variant and is a rotation of a basic reference code c0, c1, , cN−1. The information provided by rn is useful when the SS signal is composed of periodic repetition of the basic reference code sequence without data modulation. The information altogether contained in rn and {overscore (r)}n is applicable when the SS signal is a data signal modulated with the entirety of the basic reference code.
The sequence of sets of all even-correlation lags, rn, is generated at a rate equal to the rate of incoming SS signal samples dn. It is obvious that a means for generating an all-lag even-correlation sequence can be implemented by means of N parallel correlators each of which, at time n, correlates SS signal samples with the rotating reference code given by a row of Cn. However, none of the prior art teaches or suggests a method or apparatus for correlating a received SS signal with a rotating reference code using one correlator (a) which has the number of outputs equal to N and (b) whose outputs at one sampling instant are all even-correlation lags for the incoming SS signal samples and are produced at a rate equal to the rate of the incoming SS signal samples.
In some applications, it is desirable to generate only part of N even-correlation lags every sampling instant. For example, consider the situation aabove. M (M<N) selected even-correlation lags are generated. It is obvious that a means for generating an M-even-correlation sequence can be implemented by means of M parallel correlators each of which, at time n, correlates SS signal samples with the rotating reference code given by a specified row of Cn. However, none of the prior art teaches or suggests a method or apparatus for correlating a received SS signal with a rotating reference code using one correlator (a) which has the number of outputs equal to M and (b) whose outputs at one sampling instant are M even-correlation lags for the incoming SS signal samples and are produced at a rate equal to the rate of the incoming SS signal samples.
The sequence of sets of all even-correlation lags, rn, and the sequence of sets of all odd-correlation lags, {overscore (r)}n, are generated at a rate equal to the rate of incoming SS signal samples dn. It is obvious that a means for generating an all-lag even-correlation sequence can be implemented by means of N parallel correlators each of which, at time n, correlates SS signal samples with the rotating reference code given by a row of Cn. It is also obvious that a means for generating an all-lag odd-correlation sequence can be implemented by means of N parallel correlators each of which, at time n, correlates SS signal samples with a sequence specified by a row of {overscore (C)}n. However, none of the prior art teaches or suggests a method or apparatus for correlating a received SS signal with a rotating reference code using one correlator (a) which has the number of outputs equal to N and (b) whose outputs at one sampling instant are all even-correlation lags for the incoming SS signal samples and are produced at a rate equal to the rate of the incoming SS signal samples. In addition, none of the prior art teaches or suggests a method or apparatus for correlating a received SS signal with a rotating reference code using one correlator (a) which has the number of outputs equal to N and (b) whose outputs at one sampling instant are all odd-correlation lags for the incoming SS signal samples and are produced at a rate equal to the rate of the incoming SS signal samples.
In some applications, it is desirable to generate only part of N even- and N odd-correlation lags every sampling instant. For example, consider the situation where M selected even- and M selected odd-correlation lags (M<N) are generated. It is obvious that a means for generating an M-even-correlation sequence can be implemented by means of M parallel correlators each of which, at time n, correlates SS signal samples with the rotating reference code given by a specified row of Cn. It is also obvious that a means for generating an M-odd-correlation sequence can be implemented by means of M parallel correlators each of which, at time n, correlates SS signal samples with a sequence specified by a specified row of {overscore (C)}n. However, none of the prior art teaches or suggests a method or apparatus for correlating a received SS signal with a rotating reference code using one correlator (a) which has the number of outputs equal to M and (b) whose outputs at one sampling instant are M even-correlation lags for the incoming SS signal samples and are produced at a rate equal to the rate of the incoming SS signal samples. In addition, none of the prior art teaches or suggests a method or apparatus for correlating a received SS signal with a rotating reference code using one correlator (a) which has the number of outputs equal to M and (b) whose outputs at one sampling instant are M odd-correlation lags for the incoming SS signal samples and are produced at a rate equal to the rate of the incoming SS signal samples.